package com.tbit.main.dao.core;

import com.tbit.main.pojo.Account;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 角色
 *
 * @author Leon
 * 2019年11月9日 下午2:06:25
 */
public interface AccountDao {

    /**
     * 根据代理商id批量查询
     *
     * @param params
     * @return
     */
    List<Account> getByAccountIds(Map<String, Object> params);

    /**
     * 根据id查询
     *
     * @param accountId
     * @return
     */
    Account getByAccountId(Integer accountId);

    /**
     * 根据父id查询
     *
     * @param parentId
     * @return
     */
    List<Account> getByParentId(Integer parentId);

    /**
     * 查询品牌下所有运营区域
     *
     * @param accountId
     * @return
     */
    List<Account> getBrandAgent(Integer accountId);

    /**
     * 查询股东账号运营区域
     *
     * @param accountId
     * @return
     */
    List<Account> getHolderAgent(Integer accountId);

    long selectCountHolder(Integer accountUserId);

    /**
     * 获取所有
     *
     * @return
     */
    List<Account> getAll();

    /**
     * 根据accountId，向上查询type
     *
     * @param params
     * @return
     */
    Account getByAccountAndType(Map<String, Object> params);

    /**
     * 根据类型查询
     *
     * @param type
     * @return
     */
    List<Account> getByType(Integer type);

    /**
     * 根据运营区域id模糊查询
     *
     * @param params
     * @return
     */
    List<Account> getAccountIdsVague(Map<String, Object> params);

    /**
     * 根据运营区域查询品牌
     *
     * @param accountId
     * @return
     */
    Integer getByAccount(Integer accountId);

    /**
     * 获取所有的区域-品牌
     *
     * @return
     */
    List<Map<String, Object>> getAccountAll();

    /**
     * 根据代理商id批量查询
     *
     * @param accountIds
     * @return
     */
    List<Account> getAccountIds(@Param("accountIds") String accountIds);

    List<Account> getAccountTree(Map<String, Object> map);
}